class AESUtils {
    // 私有静态变量，用于存储密钥
    private static $key = 'Q6Mr6rDpn12iZb';

    // 加密方法
    public static function enAES($originTxt) {
        // 使用类内部的私有静态密钥进行加密
        return base64_encode(openssl_encrypt($originTxt, 'AES-128-ECB', self::$key, OPENSSL_RAW_DATA));
    }

    // 解密方法
    public static function deAES($encryptedTxt) {
        // 使用类内部的私有静态密钥进行解密
        $data = base64_decode($encryptedTxt);
        return openssl_decrypt($data, 'AES-128-ECB', self::$key, OPENSSL_RAW_DATA);
    }

    // （可选）如果你需要更改密钥，可以添加一个静态方法来设置新密钥
    // 注意：这样做通常不推荐，因为它可能会破坏已经加密的数据的安全性
    public static function setKey($newKey) {
        self::$key = $newKey;
    }

    // （可选）获取当前密钥的方法（出于调试或特殊需求）
    // 注意：在生产环境中，通常不建议暴露密钥
    public static function getKey() {
        return self::$key;
    }
}





class NumberEncryptor
{
    // 加密映射表
    private static $encryptionMap = [
        '3' => '8',
        '8' => '3',
        '4' => '7',
        '7' => '4',
        '5' => '6',
        '6' => '5',
    ];

    /**
     * 加密方法
     * @param string $input 输入的字符串
     * @return string 加密后的字符串
     */
    public static function encrypt($input)
    {
        $output = '';
        for ($i = 0; $i < strlen($input); $i++) {
            $char = $input[$i];
            $output .= self::$encryptionMap[$char] ?? $char;
        }
        return $output;
    }

    /**
     * 解密方法
     * @param string $input 加密后的字符串
     * @return string 解密后的字符串
     */
    public static function decrypt($input)
    {
        // 解密和加密使用相同的映射表，因为互换操作是对称的
        return self::encrypt($input);
    }
}

// 测试加密
$original = '1234567890';
$encrypted = NumberEncryptor::encrypt($original);
echo "加密后: " . $encrypted . "\n"; // 输出: 加密后: 1274653890

// 测试解密
$decrypted = NumberEncryptor::decrypt($encrypted);
echo "解密后: " . $decrypted . "\n"; // 输出: 解密后: 1234567890


